package org.llc.common.starter.model;

import lombok.Data;
import org.springframework.security.core.GrantedAuthority;

import java.util.Date;

/**
 * 用户角色
 * @author llc
 * @date 2018/4/2 19:50
 * @since 1.0.0
 */
@Data
public class Role implements GrantedAuthority, Comparable<Role> {

    /**
     * 主键id
     */
    private Long id;

    /**
     * 角色名称
     */
    private String name;

    /**
     * 值
     */
    private String value;

    /**
     * 机构
     */
    private String organize;

    /**
     * 是否可用 1:是 0:否
     */
    private Boolean isEnabled;

    /**
     * 是否删除 1:是 0:否
     */
    private Boolean isDelete;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 修改时间
     */
    private Date updateTime;

    /**
     * 拼接角色
     * <p>ROLE_ + {@code this.organize} + _ + {@code this.value}</p>
     * @return java.lang.String
     * @author llc
     * @date 2019/12/17 14:41
     */
    @Override
    public String getAuthority() {
        return "ROLE_" + this.organize +
                "_" +
                this.value;
    }

    /**
     * 判断相同方法
     * @param o 对比角色对象
     * @return int
     * @author llc
     * @date 2019/12/17 14:43
     */
    @Override
    public int compareTo(Role o) {
        // 判断id是否相同
        if (this.id.equals(o.getId())) {
            return 0;
        }
        return -1;
    }
}